#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
//标准输出重定向
//1.正常输出重定向到log.txt文件
//2.错误输出重定向到error.txt文件

int main()
{
    //关闭标准输出的和标准错误输出
    close(STDOUT_FILENO);
    close(STDERR_FILENO); 
    //打开指向特定文件的文件描述符
    //O_CREAT:如果文件不存在则创建 O_RDWR:读写模式 0644:权限 O_APPEND:追加模式写到文件后面
    open("log.txt",O_CREAT|O_RDWR|O_APPEND,0644);//fd 1 新的标准输出

    open("error.txt",O_CREAT|O_RDWR|O_APPEND,0644);//fd 2 新的标准错误输出
    char input_buf[20];
    //使用标准输入 获取到控制台的输入存到input_buf中
    fgets(input_buf, 20, stdin);
    //打印input_buf,使用标准输出输出到文件
    printf("input_buf: %s\n", input_buf);
    //使用标准输出输出到文件
    fputs("使用stdout\n", stdout);
    fflush(stdout);
    //使用标准错误输出输出到文件
    fputs("使用stderr\n", stderr);
    //使用STDIN_FILENO得到控制台输入
    char stdin_buf[20];
    read(STDIN_FILENO, stdin_buf, 20);
    //打印stdin_buf,使用标准输出输出到文件
    printf("stdin_buf: %s\n", stdin_buf);
    //使用STDOUT_FILENO输出到文件
    write(STDOUT_FILENO, "使用STDOUT_FILENO\n", 20);
    //使用STDERR_FILENO输出到文件
    write(STDERR_FILENO, "使用STDERR_FILENO\n", 20);
    return 0;
}